From: Yang Hongyang Date: Mon, 13 Jul 2015 08:43:30 +0000 (+0800) Subject: tools/libxl: check QEMU state before resume dm X-Git-Tag: archive/raspbian/4.8.0-1+rpi1~1^2~2747 X-Git-Url: https://dgit.raspbian.org/%22http:/www.example.com/cgi/%22https://%22%22/%22http:/www.example.com/cgi/%22https:/%22%22?a=commitdiff_plain;h=43012693cf9b56efee92504016149abee016b2fa;p=xen.git tools/libxl: check QEMU state before resume dm check QEMU state before resume dm on QEMU_XEN_TRADITIONAL. Signed-off-by: Yang Hongyang CC: Ian Campbell CC: Ian Jackson CC: Wei Liu Acked-by: Ian Campbell Acked-by: Wei Liu --- diff --git a/tools/libxl/libxl_dom_suspend.c b/tools/libxl/libxl_dom_suspend.c index a90800dfbf..4cc01ad0fa 100644 --- a/tools/libxl/libxl_dom_suspend.c +++ b/tools/libxl/libxl_dom_suspend.c @@ -375,11 +375,19 @@ static void domain_suspend_callback_common_done(libxl__egc *egc, int libxl__domain_resume_device_model(libxl__gc *gc, uint32_t domid) { + const char *path, *state; switch (libxl__device_model_version_running(gc, domid)) { case LIBXL_DEVICE_MODEL_VERSION_QEMU_XEN_TRADITIONAL: { - libxl__qemu_traditional_cmd(gc, domid, "continue"); - libxl__wait_for_device_model_deprecated(gc, domid, "running", NULL, NULL, NULL); + uint32_t dm_domid = libxl_get_stubdom_id(CTX, domid); + + path = libxl__device_model_xs_path(gc, dm_domid, domid, "/state"); + state = libxl__xs_read(gc, XBT_NULL, path); + if (state != NULL && !strcmp(state, "paused")) { + libxl__qemu_traditional_cmd(gc, domid, "continue"); + libxl__wait_for_device_model_deprecated(gc, domid, "running", + NULL, NULL, NULL); + } break; } case LIBXL_DEVICE_MODEL_VERSION_QEMU_XEN: